#pragma once
#include <iostream>

class SingletonEx
{
public:
    // 获取唯一实例（懒汉模式，C++11及以上线程安全）
    static SingletonEx& GetInstance()
    {
        static SingletonEx instance; // 局部静态变量，首次调用时创建
        return instance;
    }

    // 禁止拷贝和赋值
    SingletonEx(const SingletonEx&) = delete;
    SingletonEx& operator=(const SingletonEx&) = delete;

private:
    SingletonEx() {} // 构造函数私有化
};


class Singleton
{
public:
    // 获取唯一实例
    static Singleton& GetInstance()
    {
        return instance;
    }

    // 禁止拷贝和赋值
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

private:
    Singleton() {} // 构造函数私有化
    static Singleton instance; // 静态成员声明（C++14饿汉模式）
    //inline static Singleton instance{}; // C++17: 类内定义并初始化静态成员

};

// 静态成员定义
Singleton Singleton::instance;